package metier;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import net.sf.saxon.Configuration;
import net.sf.saxon.query.DynamicQueryContext;
import net.sf.saxon.query.StaticQueryContext;
import net.sf.saxon.query.XQueryExpression;
import net.sf.saxon.trans.XPathException;

public class Metier {

	private String nfile;
	private File f;
	
	private Configuration xqueryConfig;
	private StaticQueryContext xqueryStaticContext;
	private DynamicQueryContext xqueryDynamicContext;
	private XQueryExpression xqueryExpression;
	
	private String filtre1;
	private String tag_filtre1;
	private String filtre2;
	private String tag_filtre2;
	private String filtre3;
	private String tag_filtre3;
	
	//methode de suppression du contenu d'un dossier
	static public void deleteDirectory( String emplacement )
	{
	  File path = new File( emplacement );
	  if( path.exists() )
	  {
	    File[] files = path.listFiles();
	    for( int i = 0 ; i < files.length ; i++ )
	    {
	      if( files[ i ].isDirectory() )
	      {
	        deleteDirectory( path+"\\"+files[ i ] );
	      }
	      files[ i ].delete();
	    }
	  }
	}
	
	public Metier(String f1, String f2, String f3) throws XPathException{
		//on configure les variables afin de faire les requetes sur le fichier citation.xml
		xqueryConfig = new Configuration();
		xqueryStaticContext = new StaticQueryContext(xqueryConfig);
		xqueryDynamicContext = new DynamicQueryContext(xqueryConfig);
		xqueryDynamicContext.setContextItem(xqueryConfig.buildDocument(
				new StreamSource(new File("fic/citations.xml"))));
		//on set les 3 filtres
		this.filtre1=f1;
		this.filtre2=f2;
		this.filtre3=f3;
		//on remplace pour que ca corresponde au nom de la balise : "Par mot-clef" -> "motcle"
		if(this.filtre1.endsWith("Par auteur")){this.tag_filtre1="auteur";}else{
			if(this.filtre1.endsWith("Par mot-clef")){this.tag_filtre1="motcle";}else{
				{this.tag_filtre1="theme";}
			}
		}
		if(this.filtre2.endsWith("Par auteur")){this.tag_filtre2="auteur";}else{
			if(this.filtre2.endsWith("Par mot-clef")){this.tag_filtre2="motcle";}else{
				{this.tag_filtre2="theme";}
			}
		}
		if(this.filtre3.endsWith("Par auteur")){this.tag_filtre3="auteur";}else{
			if(this.filtre3.endsWith("Par mot-clef")){this.tag_filtre3="motcle";}else{
				{this.tag_filtre3="theme";}
			}
		}
	}
	
	public void createHtmlPage() throws XPathException, FileNotFoundException, IOException{
		//deleteDirectory("fic/html");
		
		//On genere la page frame1.html en passant le parametre filter1 ! --> OK
		nfile = "fic/xq/liste_gauche.xquery";
		f = new File(nfile);
		xqueryExpression = xqueryStaticContext.compileQuery(new FileReader(f));
		xqueryDynamicContext.setParameter("titre", this.filtre1);
		xqueryDynamicContext.setParameter("tag_filtre1", this.tag_filtre1);
		xqueryExpression.run(xqueryDynamicContext,new StreamResult("fic/html/frame1.html"),null);
		
		//On genere la page frame2.html en passant les deux premiers filtres --> OK
		nfile = "fic/xq/liste_haut_droite.xquery";
		f = new File(nfile);
		xqueryExpression = xqueryStaticContext.compileQuery(new FileReader(f));
		xqueryDynamicContext.setParameter("titre", this.filtre2);
		xqueryDynamicContext.setParameter("tag_filtre1", this.tag_filtre1);
		xqueryDynamicContext.setParameter("tag_filtre2", this.tag_filtre2);
		xqueryExpression.run(xqueryDynamicContext,new StreamResult("fic/html/frame2.html"),null);
		
		//On genere la page frame3.html en passant les trois filtres --> OK
		nfile = "fic/xq/liste_bas_droite.xquery";
		f = new File(nfile);
		xqueryExpression = xqueryStaticContext.compileQuery(new FileReader(f));
		xqueryDynamicContext.setParameter("titre", this.filtre3);
		xqueryDynamicContext.setParameter("tag_filtre1", this.tag_filtre1);
		xqueryDynamicContext.setParameter("tag_filtre2", this.tag_filtre2);
		xqueryDynamicContext.setParameter("tag_filtre3", this.tag_filtre3);
		xqueryExpression.run(xqueryDynamicContext,new StreamResult("fic/html/frame3.html"),null);
		
		
		try { 
			//Pour lancer firefox avec le fichier sous windows
			//Process proc=Runtime.getRuntime().exec("C:\\Program Files\\Mozilla Firefox\\firefox.exe C:\\Users\\kev.android\\workspace\\MiniP_Bdd2\\fic\\html\\_main.html"); 
		} 
		catch (Exception e) 
		{ } 
	}
	
	
	
	
}
